export default {

	//开启命名空间
	namespaced: true,

	//准备actions对象——响应组件中用户的动作
	actions: {
		
		addCart(context,value) {
			
			//购物车为空，直接添加商品
			if(!context.state.cart.length){
				//添加数量属性
				value.nub = 1
				//添加是否购买选项
				value.tick = false
				context.commit('AddCart',value)
				return
			}
			
			//判断是否有重复商品
			const a = context.state.cart.every(item=>{
				return item.title != value.title
			})
			
			if(a) {
				//添加数量属性
				value.nub = 1
				context.commit('AddCart',value)
			}else{
				alert('购物车已有此商品')
			}
			
		}


	},

	//准备mutations对象——修改state中的数据
	mutations: {
		
		AddCart(state,data) {
			console.log('state',state)
			console.log('data',data)
			state.cart.push(data)
		},
		
		// 更改数量
		nub(state,data) {
			state.cart.nub = data
		},
		
		//选择是否购买
		tick(state,data) {
			state.cart.tick = data
		},
		
		//全选商品
		selectAll(state,data) {
			state.cart.forEach(item => {
				item.tick = data
			})
		}

	},
	
	getters:{
		
		//所买商品总价
		total(state) {
			
			let add = 0;
			//遍历数组
			state.cart.forEach(item=>{
				//判断是否勾选购买
				if(item.tick) {
					// 勾选购买后计算总价
					add += Number(item.price)*item.nub
				}
			})
			//组件显示的单位为分，所以乘100
			return add*100;
		}
		
	},

	//准备state对象——保存具体的数据
	state: {
		cart:[]
	}

}
